//package ddd.initializr.api;
//
//import com.baomidou.mybatisplus.generator.FastAutoGenerator;
//import com.baomidou.mybatisplus.generator.config.OutputFile;
//import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
//import org.springframework.stereotype.Controller;
//import org.springframework.web.bind.annotation.PostMapping;
//import org.springframework.web.bind.annotation.RequestBody;
//import org.springframework.web.bind.annotation.RequestMapping;
//
//import java.util.Collections;
//
///**
// * 初始化api
// *
// * @author ${author}
// * @since 2022-06-23 20:59
// */
//@Controller
//@RequestMapping(value = "initializr")
//public class InitializrApi {
//
//    @PostMapping(value = "generator")
//    public String generator(@RequestBody GeneratorRequest request) {
//        // 检验数据库配置
//        GeneratorRequest.JdbcConfig jdbcConfig = request.getJdbcConfig();
//
//        // 创建生成器
//        FastAutoGenerator generator = FastAutoGenerator.create(jdbcConfig.getUrl(), jdbcConfig.getUsername(), jdbcConfig.getPassword());
//
//        // 全局配置
//        GeneratorRequest.GlobalConfig globalConfig = request.getGlobalConfig();
//        generator.globalConfig(builder -> {
//            builder.author(globalConfig.getAuthor()) // 设置作者
//                    .commentDate(globalConfig.getPattern()) // 设置时间格式
//                    .disableOpenDir() // 禁止打开输出目录
//                    .outputDir(globalConfig.getOutputDir()); // 指定输出目录
//        });
//
//
//        GeneratorRequest.PackageConfig packageConfig = request.getPackageConfig();
//        generator.packageConfig(builder -> {
//            builder.parent(packageConfig.getName()) // 设置父包名
//                    .moduleName(packageConfig.getModuleName()) // 设置父包模块名
//                    .pathInfo(Collections.singletonMap(OutputFile.xml, packageConfig.getXmlDir())); // 设置mapperXml生成路径
//        });
//
//        GeneratorRequest.StrategyConfig strategyConfig = request.getStrategyConfig();
//        generator.strategyConfig(builder -> {
//            builder.addInclude(strategyConfig.getInclude()) // 设置需要生成的表名
//                    .addTablePrefix(strategyConfig.getTablePrefix()); // 设置过滤表前缀
//        });
//
//
//        generator.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板，默认的是Velocity引擎模板
//                .templateConfig(builder -> {
//                    builder.entity("/templates/application/src/main/java/application/api/request/addRequest.java.ftl");
//                });
//
//
//        // 生成文件
//        generator.execute();
//
//
//        return "afewfwe";
//    }
//}
